import time
import jwt

# 生成token的函数，使用JWT算法
# apikey: str，API密钥，格式为"id.secret"
# exp_seconds: int，token的过期时间（单位：秒）
def generate_token(apikey: str, exp_seconds: int):
    try:
        # 尝试将apikey按照"."进行分割，获取id和secret部分
        id, secret = apikey.split(".")
    except Exception as e:
        # 如果分割失败，则抛出异常
        raise Exception("invalid apikey", e)

    # 构建token的payload
    payload = {
        "api_key": id,  # 设置api_key为id部分
        "exp": int(round(time.time() * 1000)) + exp_seconds * 1000,  # 设置token的过期时间
        "timestamp": int(round(time.time() * 1000)),  # 设置时间戳
    }

    # 使用JWT库对payload进行编码，生成token
    return jwt.encode(
        payload,
        secret,  # 使用密钥进行签名
        algorithm="HS256",  # 指定算法为HS256
        headers={"alg": "HS256", "sign_type": "SIGN"},  # 设置头部信息
    )